﻿Imports System.Data

Public Class BCRankeado
    'Public Shared Function SalvarRankeado(ByVal objBERankeado As BE.BERanking) As String
    '    Dim objDARanking As New DA.DARanking
    '    Dim strIdRanking As String
    '    strIdRanking = objDARanking.Salvar(objBERanking)
    '    Return strIdRanking
    'End Function
    Public Shared Sub EnviarMensagem(ByVal strMensagem As String, ByVal objBERankeado As BE.BERankeado, ByVal objBEUsuario As BE.BEUsuario)
        Dim objDARankeado As New DA.DARankeado
        Dim objDAMensagem As New DA.DAMensagem
        Dim objBEMensagem As New BE.BEMensagem
        Dim strIdMensagem As String

        objBEMensagem.Mensagem = strMensagem
        objBEMensagem.Data = Date.Now
        objBEMensagem.Status = "Aguardando"
        objBEMensagem.Reprovador = ""
        objBEMensagem.Aprovador = ""
        objBEMensagem.JustificativaReprovacao = ""
        objBEMensagem.Remetente = objBEUsuario.Usuario

        Try
            strIdMensagem = objDAMensagem.AddMensagem(objBEMensagem)
            objDAMensagem.AddMensagemRanking(strIdMensagem, objBERankeado.CPF, objBERankeado.IdRanking)
        Catch ex As ApplicationException
            Throw New ApplicationException("extranet.BC.BCRankeado.EnviarMensagem(): " & ex.Message)
        End Try
    End Sub

    Public Shared Sub IncluirRankeado(ByVal objBERankeado As BE.BERankeado)
        Dim objDARankeado As New DA.DARankeado
        objDARankeado.SalvarRankeado(objBERankeado)
    End Sub

  Private Shared Sub TentarRelacionarRankeadoComUsuario(ByVal objBERankeado As BE.BERankeado)
    Dim objDARankeado As New DA.DARankeado
        objBERankeado.Usuario = BCUsuario.SelecionarPeloCPF(objBERankeado.CPF)
        If objBERankeado.Usuario Is Nothing Then
            objDARankeado.SalvarRankeado(objBERankeado)
        End If
    End Sub

    Public Shared Sub DeletarRankeado(ByVal objBERankeado As BE.BERankeado)
        Dim objDARankeado As New DA.DARankeado
        objDARankeado.ExcluirRankeado(objBERankeado)
    End Sub

    Public Shared Function ListarRankeados(ByVal strIdRanking As String) As List(Of BE.BERankeado)
        Dim objDARankeado As New DA.DARankeado
        Return objDARankeado.ListarRankeados(strIdRanking)
    End Function

    Public Shared Function LerRankeados(ByVal strEndXML As String, ByVal boolTop10 As Boolean) As List(Of BE.BERankeado)
        Dim xml As New DataSet
        Dim lstRankeados As New List(Of BE.BERankeado)
        Try
            If System.IO.File.Exists(strEndXML) Then

                xml.ReadXml(strEndXML)

                For Each xmlRows As DataRow In xml.Tables("Table0_Group1").Rows
                    Dim objBERankeado As New BE.BERankeado

                    objBERankeado.CPF = xmlRows(4).ToString
          objBERankeado.Franquia = xmlRows(2).ToString
                    objBERankeado.Usuario = New BE.BEUsuario((xmlRows(1).ToString.Split(" ,")(1) & " " & xmlRows(1).ToString.Split(" ,")(0)).ToString().Replace(",", ""))
                    objBERankeado.Pontos = Convert.ToInt32(Decimal.Round(MetodosComuns.ConverteTextoParaDecimal(xmlRows(5).ToString())) / 100)

                    lstRankeados.Add(objBERankeado)

                Next
                lstRankeados.Sort(New Comparison(Of BE.BERankeado)(AddressOf BE.BERankeado.Comparador))
                If boolTop10 = True Then
                    If lstRankeados.Count > 10 Then
                        lstRankeados.RemoveRange(10, lstRankeados.Count - 10)
                    End If
                End If
            End If

        Catch ex As ApplicationException

        End Try

        Return lstRankeados
    End Function

    Public Shared Function SelecionarRankeado(ByVal objBERankeado As BE.BERankeado, ByVal intNumMaximoDeMsgs As Integer) As BE.BERankeado
        Dim objDARankeado As New DA.DARankeado
        Dim objDAMensagem As New DA.DAMensagem
        Dim lstBERankeado As List(Of BE.BERankeado) = objDARankeado.BuscarRankeado(objBERankeado.IdRanking, objBERankeado.CPF)

        'RANKEADO: Ver se o vendedor já é rankeado
        If lstBERankeado.Count = 0 Then
            'Se nao existe rankeado, cria
            IncluirRankeado(objBERankeado)
        End If

        'RANKEADO e VENDEDOR: Ver se o vendedor rankeado é tambem usuario
        If objBERankeado.CPF <> "" Then
            'Se nao existe login tenta relacionar o cpf
            TentarRelacionarRankeadoComUsuario(objBERankeado)
        End If

        objBERankeado = objDARankeado.SelecionarRankeado(objBERankeado.IdRanking, objBERankeado.CPF)
        objBERankeado.Mensagens = objDAMensagem.ListarMensagensRankeado(objBERankeado.IdRanking, objBERankeado.CPF, True, intNumMaxMsg:=intNumMaximoDeMsgs)

        Return objBERankeado
    End Function

End Class
